Conversation
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| @@ -0,0 +1,169 @@ | |||
| namespace Bor; | |||
There was a problem hiding this comment.
Назвали бы заодно его как-то по-человечески. На английском он Trie, а транслитом нельзя писать (если что, C# позволяет имена русскими буквами, но это адово неудобно).
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| { | ||
| private const int alphabetSize = 65536; | ||
|
|
||
| private BorElement root = new BorElement(); |
There was a problem hiding this comment.
| private BorElement root = new BorElement(); | |
| private BorElement root = new(); |
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| if (root == null) | ||
| { | ||
| throw new InvalidOperationException(); | ||
| } |
There was a problem hiding this comment.
Кажется, можно доказать, что root никогда не может быть null, и nullability-анализ это может проверить. Стоит считать этот факт инвариантом и убрать все проверки.
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| { | ||
| throw new InvalidOperationException(); | ||
| } | ||
| if (element == null && !root.IsTerminal) |
There was a problem hiding this comment.
Нет, null нельзя добавлять в словарь, пусть оно с ArgumentNullException в этом случае падает. Пустую строку можно, но это другое.
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| int i = 0; | ||
| while (i < element.Length) | ||
| { | ||
| int number = (int)element[i]; |
There was a problem hiding this comment.
Почему бы не хранить в walker.Next символы, а не непонятные int-ы?
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| isDeleted = true; | ||
| return true; | ||
| } | ||
| if (isDeleted == true) |
There was a problem hiding this comment.
| if (isDeleted == true) | |
| if (isDeleted) |
Не надо сравниваться с булевыми константами, == true — это тождественная функция в булевой алгебре
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| if (prefix == null) | ||
| { | ||
| return 1; | ||
| } | ||
| return 0; |
There was a problem hiding this comment.
Это лучше через тернарный оператор переписать
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| } | ||
|
|
||
| // Counts the number of rows with the same prefix | ||
| public int HowManyStartsWithPrefix(String prefix) |
There was a problem hiding this comment.
| public int HowManyStartsWithPrefix(String prefix) | |
| public int HowManyStartsWithPrefix(string prefix) |
Это одно и то же, но лучше использовать ключевое слово, обозначающее тип, а не имя типа.
NewBorForCI/NewBorForCI/Bor.cs
Outdated
| public int SizeDictionary { get; set; } | ||
|
|
||
| public int HowManyStringInDictionary { get; set; } |
There was a problem hiding this comment.
По-английски это звучит как "Моя твоя башка дубина бить". "Размер" — "Size", "Словарь" — "Dictionary", значит "РазмерСловаря" — "SizeDictionary"? :)
NewBorForCI/TestsBor/TestsBor.cs
Outdated
| TestInitialize(); | ||
| bor.Add("endProgram"); | ||
| bor.Add("endFunction"); | ||
| Assert.That(bor.HowManyStartsWithPrefix("end") == 2, "Problems with the prefix test!"); |
There was a problem hiding this comment.
There was a problem hiding this comment.
А строка, кстати, не обязательна — в чём проблема должно быть очевидно из имени теста.
Bor, 2 попытка